package com.sdonkey.score.dao;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.sdonkey.score.bean.FriendBean;
import com.sdonkey.score.bean.UserAccountBean;
import com.sdonkey.score.bean.UserLoginBean;
import com.sdonkey.score.dto.UserAccountVo;

/** 
 * 接口描述：  UserAccount接口，实现账户中心部分与数据库的交互
 * 创建人：赵超   
 * 手机号：18701321850 
 * 邮箱：773134958@qq.com
 */

public interface IUserAccountDao {
    
    /**    
     * 方法描述：回显出用户的所有信息
     */
    UserLoginBean queryUserInformation(@Param("id") Long id);
    
    /**  
     * 方法描述：更新改账户基本信息
     */
    int update_BasicInformation(UserLoginBean user);
    
    /**   
     * 方法描述：更新详细信息
     */
    int update_Details(UserLoginBean user);
    
    /**    
     * 方法描述：更新广告类别
     */
    int update_Ad_category(UserLoginBean user);
    
    /**    
     * 方法描述：更新广告分类关键字
     */
    int update_Ad_Key(UserLoginBean user);
    
    /**    
     * 方法描述：更新兴趣爱好
     */
    int update_User_Hobby(UserLoginBean user);

	/** method：friendListByCondition   
	 * 方法描述：按条件查询用户的朋友列表
	 * @param devid
	 * @param condition
	 * @return</pre>    
	 */
	List<FriendBean> friendListByCondition(@Param("devid") String devid, @Param("condition") String condition);
	/** method：friendListByID   
	 * 方法描述：按id查询用户的朋友列表
	 * createtime：2016年11月9日 下午1:18:26        
	 * @param devid
	 * @return</pre>    
	 */
	List<FriendBean> friendListByID(@Param("devid") String devid);

	/** method：friendListByID_num   
	 * 方法描述：按id查询用户的朋友数量
	 * createtime：2016年11月9日 下午1:19:34        
	 * @param devid
	 * @return</pre>    
	 */
	int friendListByID_num(@Param("devid") String devid);

	/** method：queryishaveUserByMail   
	 * 方法描述：验证用户所输入的邮箱是否被占用
	 * createtime：2016年11月9日 下午1:39:18        
	 * @param mail
	 * @return</pre>    
	 */
	boolean queryishaveUserByMail(@Param("mail") String mail);

	/** method：selectFriendsByFirstLetter   
	 * 方法描述：首字母查询好友列表
	 * createtime：2016年11月9日 下午2:58:43 
	 * @param devid 
	 * @param first 
	 * @return</pre> 
	 */
	List<FriendBean> selectFriendsByFirstLetter(@Param("devId")String devid,@Param("first") String first);

	/** method：selectFriendByFid   
	 * 方法描述：查询单个朋友信息
	 * createtime：2016年11月9日 下午4:48:29        
	 * @param friendId
	 * @return</pre>    
	 */
	FriendBean selectFriendByFid(@Param("friendId") Integer friendId);

	/** method：deleteFriend   
	 * 方法描述：删除好友		
	 * createtime：2016年11月9日 下午5:36:39    
	 * @param userid	
	 * @param deleteid	
	 * @return</pre>  
	 */
	int deleteFriend(@Param("userid")String userid, @Param("deleteid")String deleteid);

	/**
     * 查询好友关系
     */
    Long queryUserFriendAandB(@Param("userid")String userid, @Param("added_user_id")String added_user_id);
	
    /**
     * 添加好友消息
     */
    void addFriend_info(@Param("userId")String userId, @Param("added_user_id")String added_user_id,@Param("request_info") String request_info);

    /**
     * 添加好友
     */
    void addFriend(@Param("userid")String userid, @Param("added_user_id")String added_user_id);

	/**
	 * 查询用户信息 （获取用户持有的银行卡） 
	 * @param id
	 * @return
	 */
	List<UserAccountVo> queryBankCardsById(@Param("id") String id);

	/** queryBankCardOne   
	 * 查询 银行卡详细信息 和 用户的积分    
	 * @param divId
	 * @param accountId 
	 * @return</pre>    
	 */
	UserAccountVo queryBankCardOne(@Param("id") String divId, @Param("accountId")String accountId);
    
	/**
	 * 修改平台预留电话
	 */
	int update_Tel_Num(@Param("id") String id, @Param("tel_num") String tel_num);
	
	/**
	 * 小毛驴平台积分 提现  减少实际积分
	 */
	int update_Balance(@Param("id") String id, @Param("outBalance") String outBalance);
	
	/**
	 * 解除已绑定银行卡
	 * id	
	 * accountId	
	 */
	int cancelBandingCard(@Param("id") String id, @Param("accountId") String accountId);
	
	/**
	 * 添加新的银行卡
	 * userAccountVo： id 和  accountId 新的银行卡信息都在里面
	 */
	int addNewBankCard(UserAccountBean userAccount);

	/** method：getTel_Num_ById   
	 * 方法描述：通过用户ID 获取手机号
	 * createtime：2016年11月10日 下午3:09:55        
	 * @param id
	 * @return</pre>    
	 */
	String getTel_Num_ById(@Param("id") String id);

	/** method：saveNewPhone   
	 * 方法描述：保存新的手机号码		
	 * createtime：2016年11月10日 下午4:49:59  
	 * @param id	
	 * @param tel_num	
	 * @return</pre>    
	 */
	int saveNewPhone(@Param("id") String id, @Param("tel_num") String tel_num);

	/** method：ensureOldPsw   
	 * 方法描述：验证旧密码是否正确
	 * createtime：2016年11月10日 下午5:41:31        
	 * @param id
	 * @param oldPsw
	 * @return</pre>    
	 */
	int ensureOldPsw(@Param("id") String id, @Param("oldPsw")String oldPsw);

	/** method：updatePsw   
	 * 方法描述：更新 登陆 密码
	 * createtime：2016年11月11日 上午9:18:12        
	 * @param id
	 * @param newPsw
	 * @return</pre>    
	 */
	int updatePsw(@Param("id") String id, @Param("newPsw") String newPsw);

	/**
	 * 验证旧的支付密码是否正确
	 * @param id
	 * @param oldPayPsw
	 * @return
	 */
	int ensureOldPayPsw(@Param("id") String id, @Param("oldPayPsw") String oldPayPsw);

	/**
	 * 更新支付密码
	 * @param id
	 * @param newPayPsw
	 * @return
	 */
	int updatePayPsw(@Param("id") String id, @Param("newPayPsw") String newPayPsw);

	/**
	 * 更新邮箱
	 * @param id
	 * @param mail
	 * @return
	 */
	int saveNewMail(@Param("id") String id, @Param("mail") String mail);

	/**同意好友申请之后在t_user_addfriend_info中更新一下状态
	 * @param id
	 * @param adduserid
	 */
	void update_UserAddFriendInfo(@Param("id") String id,@Param("adduserid") String adduserid);

	/**拒绝好友申请之后在t_user_addfriend_info中更新一下状态
	 * @param id
	 * @param adduserid
	 */
	void update_UserAddFriendUnInfo(@Param("id") String id,@Param("adduserid") String adduserid);
 
	/** 
	 * 获取用户好友的id集合
	 * @param userId
	 * @return
	 */
	List<String> getFids(@Param("userId") String userId);
 
	/**
	 * 查询是否已经设置支付密码
	 * @param userId 
	 * @return
	 */
	boolean getPayPswStatus(@Param("userId") String userId);

	/**
	 * 查询是否绑定过此银行卡
	 * @param accountNum
	 * @param userId
	 * @return
     */
	Boolean getCardStatus(@Param("accountNum") String accountNum, @Param("userId") String userId);

	/**
	 * 获取用户密码
	 * @param userId
	 * @param flag 1.登录密码 2.支付密码
     * @return
     */
	String validateIfSameToLoginPsw(@Param("userId") String userId, @Param("flag")int flag);
}